package com.ruoyi.sts.mapper;

import java.util.Date;
import java.util.List;

import com.ruoyi.sts.domain.StsDataDeptStatisticQuery;
import com.ruoyi.sts.domain.StsDataDetail;
import com.ruoyi.sts.domain.StsDataStatisticQuery;
import com.ruoyi.sts.domain.StsHolidayDataDetail;
import org.apache.ibatis.annotations.Param;

/**
 * 客流数据Mapper接口
 * 
 * @author maoxiaodong
 * @date 2025-04-20
 */
public interface StsDataDetailMapper 
{
    /**
     * 查询客流数据
     * 
     * @param id 客流数据主键
     * @return 客流数据
     */
    public StsDataDetail selectStsDataDetailById(Long id);

    /**
     * 查询客流数据列表
     * 
     * @param stsDataDetail 客流数据
     * @return 客流数据集合
     */
    public List<StsDataDetail> selectStsDataDetailList(StsDataDetail stsDataDetail);

    /**
     * 新增客流数据
     * 
     * @param stsDataDetail 客流数据
     * @return 结果
     */
    public int insertStsDataDetail(StsDataDetail stsDataDetail);

    /**
     * 修改客流数据
     * 
     * @param stsDataDetail 客流数据
     * @return 结果
     */
    public int updateStsDataDetail(StsDataDetail stsDataDetail);

    /**
     * 删除客流数据
     * 
     * @param id 客流数据主键
     * @return 结果
     */
    public int deleteStsDataDetailById(Long id);

    /**
     * 批量删除客流数据
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteStsDataDetailByIds(String[] ids);

    /**
     * 统计客流数据列表
     *
     * @param stsDataStatisticQuery 客流数据
     * @return 客流数据集合
     */
    public List<StsDataDetail> selectStsDataStatisticList(StsDataStatisticQuery stsDataStatisticQuery);

    /**
     * 统计部门客流数据列表
     *
     * @param stsDataDeptStatisticQuery 客流数据
     * @return 客流数据集合
     */
    public List<StsDataDetail> selectStsDataDeptStatisticList(StsDataDeptStatisticQuery stsDataDeptStatisticQuery);

    /**
     * 统计部门客流数据列表10
     *
     * @param stsDataDeptStatisticQuery 客流数据
     * @return 客流数据集合
     */
    public List<StsDataDetail> selectStsDataDeptStatisticTop10List(StsDataDeptStatisticQuery stsDataDeptStatisticQuery);

    /**
     * 查询并锁住
     *
     * @param date 客流数据
     * @return 客流数据集合
     */
    public StsDataDetail lockByDate(@Param("deviceId") Long deviceId, @Param("date") Date date);

    /**
     * 查询并锁住
     *
     * @param date 客流数据
     * @return 客流数据集合
     */
    public StsDataDetail lockByDeptIdsDate(@Param("deptId3") Long deptId3, @Param("date") Date date);

    int updateDeptName(@Param("deptLevel") Integer deptLevel,
                       @Param("deptId") Long deptId,
                       @Param("deptName") String deptName);

    /**
     * 统计客流数据列表
     *
     * @param stsDataStatisticQuery 客流数据
     * @return 客流数据集合
     */
    public List<StsDataDetail> selectStsWeekDataStatisticList(StsDataStatisticQuery stsDataStatisticQuery);

    /**
     * 节假日统计查询
     * @param deptIds
     * @return
     */
    public List<StsHolidayDataDetail> selectStsDataDeptStatisticHolidayList(String[] deptIds);
}
